package com.up.cloudfeiyibackend.service;

import com.up.cloudfeiyibackend.dto.*;
import com.up.cloudfeiyibackend.result.PageResult;
import com.up.cloudfeiyibackend.result.Result;
import com.up.cloudfeiyibackend.vo.*;

import java.util.List;

public interface EventService {
    /**
     * 分页查询所有非遗活动
     * @param eventPageDto
     * @return
     */
    PageResult<EventVO> page(EventPageDto eventPageDto);

    /**
     *
     * 查询活动分类列表
     * @return
     */
    List<EventCategoryVO> getEventCategory();


    /**
     *
     * 根据分类查询活动数量
     * @param categoryId
     * @return
     */
    Integer getEventCountByCategory(Long categoryId);


    /**
     *
     * 根据活动ID查询活动详情
     * @param eventId
     * @return
     */
    EventDetailVO getEventDetail(Long eventId);


    /**
     *
     * 报名活动
     * @param
     * @return
     */
    Result signUp(EventSignupDto eventSignUpDto);

    /**
     *
     * 查询报名活动以及状态
     * @return
     */
    Result<List<EventSignupStatusVO>> getEventSignupStatus();


    /**
     *
     * 查询活动区域列表
     * @return
     */
    Result<List<EventRegionVO>> getEventRegions();

    /**
     *
     * 添加活动评论
     * @param eventCommentsDto
     * @return
     */
    Result addEventComment(EventCommentsDto eventCommentsDto);

    /**
     *
     * 删除活动评论
     * @param eventCommentId
     * @return
     */
    Result deleteEventComment(Long eventCommentId);


    /**
     *
     * 展示活动顶级评论
     * @param eventId
     * @return
     */
    Result<List<EventCommentsVO>> getAllEventTopComment(Long eventId);


    /**
     *
     * 展示活动评论回复
     * @param eventCommentsReplyDto
     * @return
     */
    Result<List<EventCommentsReplyVO>> listReplysByEventId(EventCommentsReplyDto eventCommentsReplyDto);


    /**
     *
     * 非遗传承人发布活动
     * @param eventApplicationDto
     * @return
     */
    Result EventApplication(EventApplicationDto eventApplicationDto);


    /**
     *
     * 获取当前用户所申请的活动申请表
     * @return
     */
    Result<List<EventApplicationVO>> getAllEventApplication();

    /**
     *
     * 获取回复当前用户评论中未被用户查看的总数
     * @return
     */
    Result<Integer> getNovIEWCommentCount();


    /**
     *
     * 获取所有回复当前用户评论的评论
     * @return
     */
    Result<List<ReplyCommentNotificationVO>> getNoViewCommentNotification();
}
